<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
      // 准备好的树形数据
const treeData = [
        {
          id: 1,
          name: '技术部',
          children: [
            { pid: 1, id: 11, name: '前端技术部',
              children: [
                { pid: 11, id: 111, name: '小程序技术部' },
                { pid: 11, id: 112, name: 'Vue技术部' }
              ]
            },
            { pid: 1, id: 12, name: 'Java技术部' },
            { pid: 1, id: 13, name: 'Python技术部' }
          ]
        },
        {
          id: 2,
          name: '运营部',
          children: [
            { pid: 2, id: 21, name: '济南运营部' },
            { pid: 2, id: 22, name: '青岛运营部' }
          ]
        },
        { id: 3, name: '行政部' }
      ]

      function fn(list){
        // 存储结果的数组
        const arr=[]
        // 遍历数组
        list.forEach(item=>{
          //  判断item是否存在children
            if(item.children){//如果有children
              // 函数递归（查找item的子部门）对arrs数组进行list的转换
                const arrs=fn(item.children)
              //  删除item的children属性
                delete item.children
                // 把item和arrs数组添加到结果数组
                arr.push(item,...arrs)                
            }else{//无children
              // 把item添加到结果数组
                arr.push(item)
            }
       })
        // 返回结果数组
        return arr
      }
    // 调用函数，传入树形参数，打印结果
      console.log(fn(treeData));
    </script>
    
</body>
</html>